(function flexible (window, document) {
  var docEl = document.documentElement
  var dpr = window.devicePixelRatio || 1    // 设备像素比

  // 调整 body font size
  function setBodyFontSize () {
    if (document.body) {
      document.body.style.fontSize = (12 * dpr) + 'px'
    }
    else {
      document.addEventListener('DOMContentLoaded', setBodyFontSize)
    }
  }
  setBodyFontSize();

  // 设置 1rem = viewWidth / 10
  function setRemUnit () {
    var rem = docEl.clientWidth / 10
    docEl.style.fontSize = rem + 'px'
  }

  setRemUnit()

  // 页面大小改变时重置 rem 
  window.addEventListener('resize', setRemUnit) 
  window.addEventListener('pageshow', function (e) {  // 监听页面恢复
    if (e.persisted) {
      setRemUnit()
    }
  })

  // 检测是否支持 0.5px
  if (dpr >= 2) {
    var fakeBody = document.createElement('body')     // 创建元素
    var testElement = document.createElement('div')
    testElement.style.border = '.5px solid transparent'   //设置border
    fakeBody.appendChild(testElement)
    docEl.appendChild(fakeBody)
    if (testElement.offsetHeight === 1) {   // div 窗体高度
      docEl.classList.add('hairlines')  // 往 classlist 里添加一个 class，如存在，则忽略
    }
    docEl.removeChild(fakeBody)
  }
}(window, document))